package com.yunxi.dao.otd;

import com.yunxi.core.dao.BaseMapperPlus;
import com.yunxi.core.web.ApiResult;
import com.yunxi.model.otd.VehicleConfigConstraint;
import com.yunxi.otd.pojo.RequiredPackagesVO;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 整车配置约束规则 Mapper 接口
 * </p>
 *
 * @author XUQI
 * @since 2019-08-05
 */
public interface VehicleConfigConstraintMapper extends BaseMapperPlus<VehicleConfigConstraint> {

    /**
     * 查询与选装包A互斥的其他选装包
     * @param packages 选装包A
     * @return  互斥的其他选装包
     */
    List<String> findExcludeCustomPackCode(@Param("packages") List<String> packages);

    /**
     * 根据所选选装包查询特征族数量
     * @param packages 选装包
     * @return  特征族数量
     */
    int findFamilyCodeCountByPackages(@Param("packages") List<String> packages);

    /**
     * 根据约束规则判断所选选装包是否存在互斥
     * @param packages 选装包
     * @return  互斥数
     */
    int findFamilyCodeCountByPackagesByConstraint(@Param("packages") List<String> packages);


    /**
     * 查询所有选装包
     * @return   List<String>
     */
    List<String> findPackages(@Param("vehicleCode") String vehicleCode);

    /**
     *  根据 featureCode 查询必选选装包
     * @return 必选选装包
     */
    List<RequiredPackagesVO> findRequiredPackagesByFeatureCode(@Param("vehicleCode") String vehicleCode);
}
